package com.github.caijinglong.bean;

import com.alibaba.fastjson.annotation.JSONField;

import java.util.List;

public class SaveData {

    /**
     * elites_killed : 1
     * metric_campfire_meditates : 0
     * shuffle_seed_count : 0
     * metric_build_version : 2018-01-04-PROD1
     * metric_purchased_purges : 1
     * metric_path_per_floor : ["M","M","M","?","M","E","M","R","T","$","?","R","T","M","R","B",null,"M"]
     * event_list : ["Addict","Back to Basics","Beggar","Drug Dealer","The Mausoleum","Vampires","Cursed Tome","The Library","Forgotten Altar"]
     * elite_monster_list : ["Slavers","Book of Stabbing","Gremlin Leader","Book of Stabbing","Gremlin Leader"]
     * metric_seed_played : 8552145777736556257
     * monster_list : ["Chosen","Snecko","Snake Plant","Slaver and Parasite","Snecko","Centurion and Healer","3 Cultists","Snecko","Centurion and Healer","Snake Plant","Snecko","Slaver and Parasite","Sentry and Sphere","Centurion and Healer"]
     * red : 4
     * relic_counters : [-1,-1,-1,-1,-1,-1]
     * metric_potions_floor_spawned : [2,3,6]
     * potion_seed_count : 9
     * metric_items_purchased : ["Berserk"]
     * merchant_seed_count : 17
     * is_hardmode : false
     * metric_floor_reached : 19
     * floor_num : 19
     * spirit_count : 1
     * uncommon_relics : ["Ornamental Fan","Pantograph","Paper Frog","Mercury Hourglass","Mummified Hand","Shuriken","Bottled Lightning","Kunai","Pear","Toolbox","Gremlin Horn","Dodecahedron","Letter Opener","Meat on the Bone","Self Forming Clay","Matryoshka"]
     * post_combat : false
     * relics : ["Cursed Key","Golden Idol","Toxic Egg","Bottled Flame","Dream Catcher","Eternal Feather"]
     * rare_relics : ["Frozen Eye","Peace Pipe","Old Coin","Ginger","Champion Belt","Ice Cream","Red Skull","Girya","Magic Flower","Calipers","Mango","Unceasing Top","Torii","Thread and Needle","Charon's Ashes","Sundial","Gambling Chip"]
     * potion_chance : 10
     * level_name : TheCity
     * metric_campfire_rested : 1
     * shop_relics : ["Cauldron","Lee's Waffle","Toy Ornithopter","Membership Card","Strange Spoon","Medical Kit"]
     * metric_path_taken : ["M","M","M","?","?","E","M","R","T","$","?","R","?","M","R","BOSS","M","?"]
     * name : everyone
     * bottled_flame : Pommel Strike
     * metric_playtime : 2135
     * metric_max_hp_per_floor : [80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80]
     * save_date : 1515592251950
     * cards : [{"upgrades":0,"id":"Strike_R"},{"upgrades":0,"id":"Strike_R"},{"upgrades":0,"id":"Strike_R"},{"upgrades":0,"id":"Strike_R"},{"upgrades":0,"id":"Strike_R"},{"upgrades":0,"id":"Defend_R"},{"upgrades":0,"id":"Defend_R"},{"upgrades":0,"id":"Defend_R"},{"upgrades":0,"id":"Defend_R"},{"upgrades":0,"id":"Bash"},{"upgrades":1,"id":"Armaments"},{"upgrades":1,"id":"Iron Wave"},{"upgrades":0,"id":"Metallicize"},{"upgrades":0,"id":"Headbutt"},{"upgrades":0,"id":"Uppercut"},{"upgrades":0,"id":"Pommel Strike"},{"upgrades":0,"id":"Berserk"},{"upgrades":0,"id":"Power Through"},{"upgrades":1,"id":"Berserk"},{"upgrades":0,"id":"Injury"},{"upgrades":0,"id":"Anger"},{"upgrades":0,"id":"Pommel Strike"},{"upgrades":0,"id":"Reaper"},{"upgrades":0,"id":"Doubt"},{"upgrades":0,"id":"Thunderclap"}]
     * boss : Champ
     * seed : 8552145777736557000
     * metric_items_purged : ["Pain"]
     * metric_current_hp_per_floor : [80,80,79,63,63,49,49,49,49,49,49,49,49,47,71,50,80,76]
     * current_health : 76
     * purgeCost : 100
     * common_relics : ["Strawberry","Bag of Preparation","Regal Pillow","Whetstone","War Paint","Orichalcum","Juzu Bracelet","Pen Nib","Bronze Scales","Anchor","Blood Vial","Bag of Marbles","Oddly Smooth Stone","Ancient Tea Set","Happy Flower","Frozen Egg","Vajra","Molten Egg","Lantern"]
     * room_x : 5
     * room_y : 1
     * monsters_killed : 7
     * metric_gold_per_floor : [115,134,145,145,168,208,232,232,306,90,90,90,137,157,157,286,286,309]
     * gold : 1309
     * metric_potions_floor_usage : [16]
     * card_random_seed_count : 0
     * card_seed_count : 259
     * boss_list : ["Champ"]
     * metric_campfire_rituals : 0
     * ai_seed_count : 0
     * event_chances : [0,0.1,0.03,0.02]
     * metric_card_choices : [{"not_picked":["Body Slam","Warcry"],"picked":"Armaments"},{"not_picked":["Twin Strike","Clothesline"],"picked":"Iron Wave"},{"not_picked":["Clothesline","Headbutt"],"picked":"Metallicize"},{"not_picked":["Clash","Twin Strike"],"picked":"Headbutt"},{"not_picked":["Body Slam","Brutality"],"picked":"Uppercut"},{"not_picked":["Anger","Shrug It Off"],"picked":"Pommel Strike"},{"not_picked":["Clothesline","Heavy Blade"],"picked":"Anger"},{"not_picked":["Thunderclap","Clash"],"picked":"Pommel Strike"},{"not_picked":["Feed","Impervious"],"picked":"Reaper"},{"not_picked":["Cleave","Infernal Blade"],"picked":"Thunderclap"}]
     * metric_boss_relics : [{"not_picked":["Ectoplasm","Orrery"],"picked":"Eternal Feather"}]
     * relic_seed_count : 1
     * metric_damage_taken : [{"damage":0,"enemies":"2 Louse","floor":1,"turns":3},{"damage":0,"enemies":"Small Slimes","floor":2,"turns":4},{"damage":1,"enemies":"Jaw Worm","floor":3,"turns":4},{"damage":0,"enemies":"Gremlin Gang","floor":5,"turns":7},{"damage":14,"enemies":"Lagavulin","floor":6,"turns":7},{"damage":0,"enemies":"Exordium Thugs","floor":7,"turns":4},{"damage":2,"enemies":"2 Fungi Beasts","floor":14,"turns":4},{"damage":21,"enemies":"Slime Boss","floor":16,"turns":13},{"damage":4,"enemies":"Shell Parasite","floor":18,"turns":7}]
     * green : 0
     * metric_campfire_upgraded : 2
     * treasure_seed_count : 4
     * chose_neow_reward : false
     * event_seed_count : 8
     * metric_event_choices : [{"event_name":"Golden Idol","player_choice":"Take Damage","floor":4,"damage_taken":0},{"event_name":"Match and Keep!","player_choice":"2 cards matched","floor":11,"damage_taken":0}]
     * obtained_cards : {"Anger":1,"Uppercut":1,"Pommel Strike":2,"Armaments":1,"Power Through":1,"Reaper":1,"Thunderclap":1,"Berserk":2,"Headbutt":1,"Iron Wave":1,"Metallicize":1}
     * current_room : com.megacrit.cardcrawl.rooms.EventRoom
     * play_time : 2135
     * hand_size : 5
     * boss_relics : ["Question Card","Velvet Choker","Tiny House","Calling Bell","Philosopher's Stone","Mark of Pain","Runic Pyramid","Black Star","White Beast Statue","Astrolabe","Snecko Eye","Sozu","Lizard Tail","Black Blood","Runic Cube","Runic Dome"]
     * max_health : 80
     * monster_seed_count : 56
     * blue : 0
     * path_y : [0,1]
     * path_x : [6,5]
     * potions : ["Potion Slot","Poison Potion","Block Potion"]
     * one_time_event_list : ["Accursed Blacksmith","Bonfire Elementals","Fountain of Cleansing","Duplicator","Knowing Skull","Lab","N'loth","The Joust","The Woman in Blue"]
     */

    public int elites_killed;
    public int metric_campfire_meditates;
    public int shuffle_seed_count;
    public String metric_build_version;
    public int metric_purchased_purges;
    public String metric_seed_played;
    public int red;
    public int potion_seed_count;
    public int merchant_seed_count;
    public boolean is_hardmode;
    public int metric_floor_reached;
    public int floor_num;
    public int spirit_count;
    public boolean post_combat;
    public int potion_chance;
    public String level_name;
    public int metric_campfire_rested;
    public String name;
    public String bottled_flame;
    public int metric_playtime;
    public long save_date;
    public String boss;
    public long seed;
    public int current_health;
    public int purgeCost;
    public int room_x;
    public int room_y;
    public int monsters_killed;
    public int gold;
    public int card_random_seed_count;
    public int card_seed_count;
    public int metric_campfire_rituals;
    public int ai_seed_count;
    public int relic_seed_count;
    public int green;
    public int metric_campfire_upgraded;
    public int treasure_seed_count;
    public boolean chose_neow_reward;
    public int event_seed_count;
    public ObtainedCardsBean obtained_cards;
    public String current_room;
    public int play_time;
    public int hand_size;
    public int max_health;
    public int monster_seed_count;
    public int blue;
    public List<String> metric_path_per_floor;
    public List<String> event_list;
    public List<String> elite_monster_list;
    public List<String> monster_list;
    public List<Integer> relic_counters;
    public List<Integer> metric_potions_floor_spawned;
    public List<String> metric_items_purchased;
    public List<String> uncommon_relics;
    public List<String> relics;
    public List<String> rare_relics;
    public List<String> shop_relics;
    public List<String> metric_path_taken;
    public List<Integer> metric_max_hp_per_floor;
    public List<CardsBean> cards;
    public List<String> metric_items_purged;
    public List<Integer> metric_current_hp_per_floor;
    public List<String> common_relics;
    public List<Integer> metric_gold_per_floor;
    public List<Integer> metric_potions_floor_usage;
    public List<String> boss_list;
    public List<Integer> event_chances;
    public List<MetricCardChoicesBean> metric_card_choices;
    public List<MetricBossRelicsBean> metric_boss_relics;
    public List<MetricDamageTakenBean> metric_damage_taken;
    public List<MetricEventChoicesBean> metric_event_choices;
    public List<String> boss_relics;
    public List<Integer> path_y;
    public List<Integer> path_x;
    public List<String> potions;
    public List<String> one_time_event_list;

    public static class ObtainedCardsBean {
        /**
         * Anger : 1
         * Uppercut : 1
         * Pommel Strike : 2
         * Armaments : 1
         * Power Through : 1
         * Reaper : 1
         * Thunderclap : 1
         * Berserk : 2
         * Headbutt : 1
         * Iron Wave : 1
         * Metallicize : 1
         */

        public int Anger;
        public int Uppercut;
        @JSONField(name = "Pommel Strike")
        public int _$PommelStrike21; // FIXME check this code
        public int Armaments;
        @JSONField(name = "Power Through")
        public int _$PowerThrough252; // FIXME check this code
        public int Reaper;
        public int Thunderclap;
        public int Berserk;
        public int Headbutt;
        @JSONField(name = "Iron Wave")
        public int _$IronWave213; // FIXME check this code
        public int Metallicize;
    }

    public static class CardsBean {
        /**
         * upgrades : 0
         * id : Strike_R
         */

        public int upgrades;
        public String id;
    }

    public static class MetricCardChoicesBean {
        /**
         * not_picked : ["Body Slam","Warcry"]
         * picked : Armaments
         */

        public String picked;
        public List<String> not_picked;
    }

    public static class MetricBossRelicsBean {
        /**
         * not_picked : ["Ectoplasm","Orrery"]
         * picked : Eternal Feather
         */

        public String picked;
        public List<String> not_picked;
    }

    public static class MetricDamageTakenBean {
        /**
         * damage : 0
         * enemies : 2 Louse
         * floor : 1
         * turns : 3
         */

        public int damage;
        public String enemies;
        public int floor;
        public int turns;
    }

    public static class MetricEventChoicesBean {
        /**
         * event_name : Golden Idol
         * player_choice : Take Damage
         * floor : 4
         * damage_taken : 0
         */

        public String event_name;
        public String player_choice;
        public int floor;
        public int damage_taken;
    }
}
